package genericity3;

import java.util.ArrayList;

public class GenericDemo6 {
    public static void main(String[] args) {
        //目标：搞清楚泛型和集合不支持基本数据类型，只能支持对象类型（引用数据类型）
        // ArrayList<int> list = new ArrayList<>();
        //泛型擦除：泛型在编译期间会被擦除，变成Object类型
        ArrayList<Integer> list = new ArrayList<>();
        //包装类型：int -> Integer
        //包装类：把基本数据类型转换为对象类型

        //把基本数据类型变成包装类对象
        //手工包装
        //list.add(new Integer(100));
        Integer i = Integer.valueOf(100);
        Integer j = Integer.valueOf(100);
        System.out.println(i == j);

        //自动装箱：把基本数据类型转换为包装类对象
        Integer k = 100;
        Integer l = 100;
        System.out.println(k == l);

        //自动拆箱：把包装类对象转换为基本数据类型
        int n = k;
        System.out.println(n);

        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(100);//自动装箱
        list2.add(200);//自动装箱

        int m = list2.get(0);//自动拆箱

        System.out.println("--------------------------------------------");

        //包装类新增的功能
        //1.把基本类型的数据转换为字符串
        int i2 = 100;
        String s1 = Integer.toString(i2);
        System.out.println(s1 + 1);//1001

        Integer i3 = 100;
        String s2 = i3.toString();
        System.out.println(s2 + 1);//1001

        String s3 = i2 + "";
        System.out.println(s3 + 1);//1001

        System.out.println("--------------------------------------------");

        //2.把字符串转换为基本类型的数据(重要!!!)
        String s4 = "100";
        //int i4 = Integer.parseInt(s4);
        int i4 = Integer.valueOf(s4);
        System.out.println(i4 + 1);//101

        String s5 = "99.1";
//        double d = Double.parseDouble(s5);
        double d = Double.valueOf(s5);
        System.out.println(d + 1);//100.1

    }
}
